Skip to main content

使用断点

断点通常用于调试程序。 CODESYS 支持所有 IEC 编辑器中的断点。

您可以在程序的特定位置设置断点以强制停止执行并监视变量值。您可以设置特殊的“数据断点”以在特定变量的值更改时停止程序执行。

断点或数据断点处的暂停可以与其他条件相关联。您还可以将断点和数据断点重新定义为执行特定代码而不是停止程序的“执行点”。

提示

断点 view 提供所有已定义断点的概览。它还包括用于处理对多个断点的批量更改的附加命令。

在编辑器中,以下符号标识断点或执行点的状态:

  • _cds_icon_breakpoint_activated.png: 断点已启用。

  • _cds_icon_breakpoint_deactivated.png: 断点被禁用。

  • _cds_icon_breakpoint_in_other_instance.png: 断点设置在编辑器中打开的 POU 的另一个实例中。

  • _cds_icon_breakpoint_halt.png: 程序在断点处停止。

  • _cds_icon_breakpoint_conditional_activated.png: 启用有条件的断点。

  • _cds_icon_breakpoint_conditional_deactivated.png: 带条件的断点被禁用。

  • _cds_icon_executionpoint_activated.png:启用执行点。

  • _cds_icon_executionpoint_deactivated.png: 执行点被禁用。

  • _cds_icon_executionpoint_conditional_activated.png: 启用有条件的执行点。

  • _cds_icon_executionpoint_conditional_deactivated.png: 带条件的执行点被禁用。

  • _cds_icon_data_breakpoint_activated.png:启用数据断点。

  • _cds_icon_data_breakpoint_disabled.png: 数据断点被禁用。

  • _cds_icon_data_breakpoint_halt.png:程序在数据断点处停止。

  • _cds_icon_data_execution_point_enabled.png:启用数据执行点。

  • _cds_icon_data_execution_point_disabled.png:数据执行点被禁用。

  • _cds_icon_data_executionpoint_halt.png:程序在数据执行点停止。

  • _cds_icon_data_executionpoint_cond_activated.png:启用有条件的数据执行点。

  • _cds_icon_data_breakpoint_cond_activated.png: 启用带条件的数据断点。

有关更多信息,请参阅: 断点

数据断点

提示

数据断点的功能取决于目标系统。目前,数据断点只能通过 CODESYS Control Win.

当特定变量或内存地址的值发生变化时,程序执行会在数据断点处停止。与“正常”断点一样,暂停可以链接到附加条件,或者可以处理特定代码而不是暂停(转换为数据执行点)。

您可以通过以下方式设置数据断点 新数据断点 命令在 调试 菜单或通过 新的 中的按钮 断点 看法。您可以直接指定一个限定变量名或内存地址,以监控其值的变化。

37. 例子

在下面的示例代码中,变量的内存 iNumber 被无意覆盖。但是,变量处的数据断点 iNumber 将检测其值何时发生变化。然后处理在数组访问处以相应的消息停止,这会覆盖变量值: Idx = 7.

另见下文:“设置数据断点”

PROGRAM PLC_PRG
VAR
  Idx : INT;
  Ary : ARRAY[0..3] OF BYTE;
  iNumber : INT := 55;
END_VAR
FOR idx := 0 TO 6 DO
  Ary[idx] := 0;
END_FOR


具有多个任务的应用程序中的断点

基本上,不可能同时对多个任务进行调试。当您处理带有断点或单步执行的任务时,断点在其他任务中会被忽略。

如果一个包含断点的 POU 被多个任务使用,那么只有任务(“调试任务”)被暂停,因为它首先到达断点。所有其他任务继续。这 调用堆栈 对话框显示当前暂停的任务。

如果您需要一个断点来只影响一个特定的任务,那么您可以在断点属性中定义它。

断点为每个应用程序单独运行,因此“HALT ON BP”不会影响任何其他应用程序。这也适用于父/子应用程序,即使断点设置在由多个应用程序使用且其代码仅在 PLC 上定位一次的块中。

重要

“调试任务”调用的 I/O 不会在断点处暂停更新,即使您选择 在停止时刷新 I/O PLC 设置中的复选框。

提示

如果应用程序在 PLC 的断点处停止,则在线更改或下载会导致所有任务停止,这意味着 PLC 将停止。在这种情况下, CODESYS 提示您是否继续登录。

设置单个断点(ST 编辑器中的示例)

要求:应用程序处于在线模式并正在运行。运行模式是 调试.

  1. 在编辑器中,打开以结构化文本 (ST) 编程的 POU。

  2. 将光标放在要设置断点的行中。

  3. 点击 调试 → 切换断点 或按 F9 钥匙。

    这条线用红色标记并由 _cds_icon_breakpoint_activated.png 符号(启用断点)。如果程序在断点处停止,则该行由 _cds_icon_breakpoint_halt.png 符号(在断点处停止)。程序的处理停止。这在状态行中由 HALT ON BP 状态以红色突出显示。

  4. 点击 调试 → 开始 或按 F5 钥匙。

    该计划继续进行。

  5. 设置更多断点并检查断点处的变量值。

  6. 将光标放在应删除断点的行中。

  7. 点击 调试 → 断点切换 或按 F9 钥匙。

    标记消失。断点被删除。

定义断点条件(ST 编辑器中的示例)

  1. 在编辑器中,打开以结构化文本 (ST) 编程的 POU。

  2. 将光标放在要设置断点的行中。

  3. 点击 调试 → 新断点.

    新断点 对话框打开。

  4. 点击 状况 标签。

  5. 点击 当命中数是的倍数时中断 在里面 命中数 列表框。

    在右侧字段中指定值“5”。

  6. 此外,您可以定义断点何时应该处于活动状态的布尔条件。选择 打破,当真实 复选框。在右侧的文本字段中指定一个布尔变量。

  7. 选择 立即启用断点 复选框。

  8. 关闭对话框。

    该线标记为红色并由 _cds_icon_breakpoint_conditional_activated.png 象征。

监控正在运行的程序。只要条件的布尔变量是 FALSE,断点条件不满足,程序继续运行。如果将变量设置为 TRUE,则条件满足,程序每 5 次在断点处停止。

定义执行点(ST 编辑器中的示例)

  1. 在编辑器中,打开以结构化文本 (ST) 编程的 POU。

  2. 将光标放在执行点的位置。

  3. 点击 调试 → 新断点.

    新断点 对话框打开。

  4. 点击 执行点设置 标签。

  5. 选择 执行点 选项。

    在里面 执行以下代码 字段,指定以下语句:

    iCounter := iCounter + 1;

    在里面 在设备日志中打印一条消息 字段,指定以下文本:

    Execution point reached {iCounter}

  6. 关闭对话框。

当程序到达执行点时,它不会停止,而是执行上面定义的代码。此外。向设备日志发出一条消息。

设置数据断点

要求:应用程序处于在线模式并正在运行。

  1. 点击 查看 → 断点.

  2. 点击 调试 → 新数据断点.

  3. 在里面 新断点 对话框,在 数据 选项卡,单击 _cds_icon_input_assistent.png 按钮。

  4. 在里面 输入助手 对话框 (观察变量 选项卡),选择更改时程序应停止的变量。

    或者,在 数据 直接在输入行中的选项卡。例子: PLC_PRG.iNumber.要监视的确切字节数指定为 尺寸.默认情况下,此处会自动设置与数据类型对应的值。您还可以指定要监视的更少字节。

  5. 在里面 断点 查看,选择带有数据断点的行并单击 _cds_icon_breakpoint_activated_deactivate.png 按钮。

    该线由 _cds_icon_data_breakpoint_activated.png 符号(启用数据断点)。当程序到达数据断点时(即选定变量的值发生变化时),程序处理停止。在 POU 的实现部分,下一行用箭头标识 _cds_icon_data_executionpoint_halt.png.这在状态行中由 HALT ON BP 状态以红色突出显示。

  6. 点击 调试 → 开始 或按 F5 钥匙。

    当变量的值再次改变时,程序继续运行并再次停止。